﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace A76抽象方法和抽象类
{
    class Program
    {
        static void Main(string[] args)
        {
            Animal a1 = new Dog();
            Animal a2 = new Cat();
            a1.Say();
            a2.Say();
        }
    }
    public abstract class Animal //抽象类  1不能创建对象  2可以包含普通类的成员
    {
        public int age;
        public void Run()
        {
            Console.WriteLine("四个腿儿跑");
        }
        public abstract void Say();//抽象方法 1没有方法体 2子类(非抽象)必须实现  3必须包含在抽象类型
    }

    public class Dog : Animal
    {
        public override void Say()
        {
            Console.WriteLine("汪汪");
        }
    }
    public class Cat : Animal
    {
        public override void Say()
        {
            Console.WriteLine("喵喵");
        }
    }

    abstract class A : Animal //如果子类也是抽象的就不需要实现父类的抽象方
    {

    }
}
